1. Field of the Invention
The present invention relates to a method and a circuit for code generation, and more particularly to a circuit for generating an M sequence or a GOLD code sequence.
2. Description of the Related Art
An M sequence (Maximal-length sequence) is known as a code sequence having superior autocorrelation characteristics. A GOLD code sequence, which is a code sequence obtained by adding two kinds of M sequences having the same cycle, is inferior to the M sequence in the autocorrelation characteristics, and superior to the M sequence in cross correlation characteristics and the number of sequences. Therefore, the M sequence and the GOLD code sequence are very often found in spread spectrum communications, ranging systems, and the like. In mobile communications using the spread code method, an extremely long-code with a length reaching several gigachips may be used as spreading code, for the spreading signals for identification of base stations, and, in some cases, for other communication stations.
When the long-code is used on a reverse channel from a mobile station to a base station, each mobile station is required to generate the long-code with a timing in synchronization with that of a long-code of a base station to be transmitted, and to start the generation of the long-code with the required timing in response to a transmission request as soon as possible.
The generation of spread codes involves setting a vector consisting of bit strings of a plurality of bits; adding a plurality of pairs of combinations of vectors having 2 as modulo; inputting each added result to a predetermined bit position; circular-shifting the above vectors and sequentially outputting the bit at the predetermined bit position. FIG. 10 is a block diagram of a conventional spread code generation circuit for serially generating long-codes for in-phase and quadrature components (shown as I, and Q, respectively). Vectors VEC91 and VEC92 are stored in shift registers SFG91, SFG92, respectively, and addition of each bit having 2 as modulo is performed by adders L91, L92, respectively. The adders then feed back the added results to the first stages of the shift registers, respectively. The outputs of both shift registers at the final stage are added by an adder ADD81 so as to generate an in-phase component I, and by an adder ADD92 so as to generate a quadrature component Q, after they are shifted by masks M91, M92, respectively. The masks M91, M92 have masking data with the same number of bits as that of the corresponding vector to generate outputs shifted from the outputs of the corresponding shift register by the bit AND and exclusive-OR operations with the corresponding vector, respectively. As mentioned above, spread codes are generated as a result of comparatively complex operations, and it is not an easy task to begin code strings from the midpoint thereof. Although it is, of course, possible to refer to codes corresponding to the timing in a table with all the codes previously stored, a large amount of memories are required for storing very long-codes, and therefore it is unfeasible to provide such memories in mobile stations where smaller size and more reduced electric power have been strongly required. A shift operation of vectors of M sequence by masking is found in detail in U.S. Pat. No. 5,228,054, and xe2x80x9cLatest spread spectrum communications techniquexe2x80x9d written by R. C. Dixon, translated by Toshiya Tateno, and published by Jatech Publication.
When the generation of the long-code is started after the arrivals of the beginning of the long-code cycle, there may be a waiting time corresponding to the total length of the long-code in the worst case, and, in some cases, the waiting time may be longer than a few minutes.
The present invention has been made to solve the above problems by offering a method and a circuit for generating codes enabling transmission of long-codes to start on a reverse channel in shorter waiting time.
The method for generating codes according to the present invention involves discretely determining a timing to start the generation of codes; corresponding a shift quantity between the beginning of an M sequence or a long-code cycle, and each timing to a combination of a plurality of masking data; searching a combination of masking data for a timing to start generation of long-codes in response to a transmission request at a point of time as soon as possible; shifting an initial value of a vector according to the masking data; and starting the generation of long-codes.